﻿using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;

namespace GlobalLib
{
    public class Tools
    {
        /// <summary>
        /// 获取文件后缀名
        /// </summary>
        //public static string GetPostFix(string filename)
        //{
        //    int start = filename.LastIndexOf(".") + 1;
        //    int end = filename.Substring(start, filename.Length - filename.Substring(0, start).Length).Length;
        //    return filename.Substring(start, end).ToUpper();
        //}

        /// <summary>
        /// 获取基本的Xml字符串
        /// </summary>
        public static string BaseXmlRoot
        {
            get
            {
                return "<?xml version=\"1.0\" encoding=\"utf-8\" ?><root />";
            }
        }

        /// <summary>
        /// 获取基本的Xml字符串 包含Row
        /// </summary>
        public static string BaseXmlRootRow
        {
            get
            {
                return "<?xml version=\"1.0\" encoding=\"utf-8\" ?><root><row /></root>";
            }
        }

        /// <summary>
        /// 传入字符串后 返回编码后字符串
        /// </summary>
        /// <returns></returns>
        public static string EncodingStringByString(string str)
        {
            
            byte[] b = Encoding.UTF8.GetBytes(str);
            return EncodingStringByBytes(b);
        }

        /// <summary>
        /// 传入Byte数组 返回编码后字符串
        /// </summary>
        /// <returns></returns>
        public static string EncodingStringByBytes(byte[] b)
        {
            StringBuilder sb = new StringBuilder(200);
            for (int i = 0; i < b.Length; i++)
            {
                sb.Append(string.Concat('%', Convert.ToString(b[i], 16)));
            }
            return sb.ToString();
        }

        /// <summary>
        /// 去除HTML标记
        /// </summary>
        /// <param name="NoHTML">包括HTML的源码 </param>
        /// <returns>已经去除后的文字</returns>
        public static string NoHTML(string Htmlstring)
        {
            //删除脚本
            Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);

            //删除HTML
            Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);

            Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);

            Htmlstring.Replace("<", "");

            Htmlstring.Replace(">", "");

            Htmlstring.Replace("\r\n", "");

            Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

            return Htmlstring;
        }
    }
}
